package com.example.weather

import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentStatePagerAdapter

/**
 * @author Y7993
 * CityFragmentPagerAdapter类用于为ViewPager提供碎片的适配器
 */
class CityFragmentPagerAdapter(fm: FragmentManager, // 存储碎片列表
                               var fragmentList: MutableList<Fragment?>
) :
    FragmentStatePagerAdapter(fm) {

    /**
     * 获取指定位置的碎片
     * @param position 碎片的位置
     * @return 指定位置的碎片
     */
    override fun getItem(position: Int): Fragment {
        return fragmentList[position]!!
    }

    /**
     * 获取碎片的总数量
     * @return 碎片的数量
     */
    override fun getCount(): Int {
        return fragmentList.size
    }

    var childCount: Int = 0 //表示ViewPager包含的页数

    //    当ViewPager的页数发生改变时，必须要重写两个函数
    /**
     * 通知数据集已改变，更新子项计数
     */
    override fun notifyDataSetChanged() {
        this.childCount = count
        super.notifyDataSetChanged()
    }

    /**
     * 获取指定对象的位置
     * @param object 要查找的位置的对象
     * @return 位置
     */
    override fun getItemPosition(`object`: Any): Int {
        if (childCount > 0) {
            childCount--
            return POSITION_NONE
        }
        return super.getItemPosition(`object`)
    }
}
